package com.zl.tby.service;

import com.zl.tby.core.base.bean.TbyPageResult;
import com.zl.tby.core.common.R;
import com.zl.tby.dto.TbyVillagePersonQuery;
import com.zl.tby.model.TbyVillagePerson;
import com.zl.tby.vo.TbyVillagePersonForm;

import java.util.List;

/**
 * 村庄人口表 service
 * @author sunjiaxing
 * @version 1.0
 * @since 2024/8/22 00:21
 */
public interface ITbyVillagePersonService {

    /**
     * 添加
     * @param entity: 表单信息
     * @return 保存结果
     */
    R<TbyVillagePerson> add(TbyVillagePersonForm entity);

    /**
     * 修改
     * @param entity: 表单信息
     * @return 修改结果
     */
    R<TbyVillagePerson> update(TbyVillagePersonForm entity);

    /**
     * 根据id获取对象
     * @param id: 主键id
     * @return 实体对象
     */
    TbyVillagePerson get(Long id);

    /**
     * 根据id删除
     * @param id: 主键id
     * @return 删除结果
     */
    R<Void> delete(Long id);

    /**
     * 分页查询
     * @param query: 查询参数
     * @return 结果
     */
    TbyPageResult<TbyVillagePerson> page(TbyVillagePersonQuery query);

    /**
     * 列表查询
     * @param query：查询参数
     * @return 列表结果
     */
    List<TbyVillagePerson> list(TbyVillagePersonQuery query);

    /**
     * 根据年份范围获取村子人口
     * @param startYear: 开始年份
     * @param endYear: 结束年份
     * @param villageId： 村庄id
     * @return 结果
     */
    List<TbyVillagePerson> personCountByYear(String startYear, String endYear, Integer villageId);

    /**自动同步上一年人口信息*/
    void autoRsyncPersonCount(boolean check);
}
